package com.resourcestore.action;

import java.io.UnsupportedEncodingException;

import java.text.ParseException;
import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.resourcestore.utils.CommonUtil;
import com.resourcestore.utils.tag.Pagination;
import com.resourcestore.action.BaseAction;
import com.resourcestore.dao.MajorFileSrcDao;
import com.resourcestore.model.CourseFileSrcPublic;
import com.resourcestore.model.MajorFileSrc;

public class MajorFileSrcAction extends BaseAction {

	private MajorFileSrc majorFileSrc;
	private List<MajorFileSrc> listMajorFileSrc;
	private MajorFileSrcDao majorFileSrcDao = new MajorFileSrcDao();
	private Pagination pagination = new Pagination();

	/**
	 * 查询返回List带分页
	 * 
	 * @throws ParseException
	 * 
	 */

	public String listMajorFileSrc() {
		majorFileSrc = new MajorFileSrc();
		majorFileSrc.setMajorFileCategoryId(-2);
		pagination.setTotal(majorFileSrcDao.queryMajorFileSrcNum(majorFileSrc));
		listMajorFileSrc = majorFileSrcDao.selectMajorFileSrcPage(majorFileSrc,
				pagination);

		// 将bigint数字处理为时间格式
		for (int i = 0; i < listMajorFileSrc.size(); i++) {
			// 将文件类型代码转换为名称
			listMajorFileSrc.get(i).setMajorFileTypeName(
					this.showFileCate(listMajorFileSrc.get(i)
							.getMajorFileType()));
			try {
				listMajorFileSrc.get(i).setGmtCreatedString(
						CommonUtil.getSysTimeFormatString(listMajorFileSrc.get(
								i).getGmtCreated()));
				listMajorFileSrc.get(i).setGmtModifiedString(
						CommonUtil.getSysTimeFormatString(listMajorFileSrc.get(
								i).getGmtModified()));
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return "default";
	}

	/**
	 * 根据条件搜索，查询返回List带分页
	 * 
	 * @throws ParseException
	 * 
	 */
	public String searchListMajorFileSrc() {

		if (majorFileSrc.getMajorFileCategoryId()==0){
			majorFileSrc.setMajorFileCategoryId(-2);
		}
		// 对内容进行urldecoder解码
		try {
			majorFileSrc.setMajorFileName(new String(majorFileSrc
					.getMajorFileName().getBytes("iso-8859-1"), "UTF-8"));
			majorFileSrc.setMajorFileRemark(new String(majorFileSrc
					.getMajorFileRemark().getBytes("iso-8859-1"), "UTF-8"));
			majorFileSrc.setMajorName(new String(majorFileSrc.getMajorName()
					.getBytes("iso-8859-1"), "UTF-8"));

			majorFileSrc.setAuthor(new String(majorFileSrc.getAuthor()
					.getBytes("iso-8859-1"), "UTF-8"));
		} catch (UnsupportedEncodingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		pagination.setTotal(majorFileSrcDao.queryMajorFileSrcNum(majorFileSrc));
		listMajorFileSrc = majorFileSrcDao.selectMajorFileSrcPage(majorFileSrc,
				pagination);

		// 将bigint数字处理为时间格式
		for (int i = 0; i < listMajorFileSrc.size(); i++) {
			listMajorFileSrc.get(i).setMajorFileTypeName(
					this.showFileCate(listMajorFileSrc.get(i)
							.getMajorFileType()));
			try {
				
				listMajorFileSrc.get(i).setGmtCreatedString(
						CommonUtil.getSysTimeFormatString(listMajorFileSrc.get(
								i).getGmtCreated()));
				listMajorFileSrc.get(i).setGmtModifiedString(
						CommonUtil.getSysTimeFormatString(listMajorFileSrc.get(
								i).getGmtModified()));
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}

		return newpath("/MajorFileSrc/listMajorFileSrc.jsp");
	}

	/**
	 * 预插入一条数据
	 */
	public String preInsertMajorFileSrc() {

		return newpath("/MajorFileSrc/insertMajorFileSrc.jsp");
	}

	/**
	 * 插入一条数据
	 */
	public String insertMajorFileSrc() {

		try {
			majorFileSrc.setGmtCreated(CommonUtil.getSysTimeFormatNum());
			majorFileSrc.setGmtModified(CommonUtil.getSysTimeFormatNum());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		majorFileSrcDao.insertMajorFileSrc(majorFileSrc);
		return redirect(this.getUrl());
	}

	/**
	 * 更新之前加载原信息
	 * 
	 */
	public String preUpdateMajorFileSrc() {
		majorFileSrc = majorFileSrcDao.selectMajorFileSrcById(majorFileSrc);

		return newpath("/MajorFileSrc/updateMajorFileSrc.jsp");
	}

	/**
	 * 更新信息
	 * 
	 */
	public String updateMajorFileSrc() {

		try {
			// majorFileSrc.setGmtCreated(CommonUtil.getSysTimeFormatNum());
			majorFileSrc.setGmtModified(CommonUtil.getSysTimeFormatNum());
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		majorFileSrcDao.updateMajorFileSrc(majorFileSrc);
		return redirect(this.getUrl());
	}

	/**
	 * 删除信息
	 */
	public String deleteMajorFileSrc() {
		
		//删除服务器文件
		MajorFileSrc majorFileSrcTemp = new MajorFileSrc();
		majorFileSrcTemp = majorFileSrcDao.selectMajorFileSrcById(majorFileSrc);
		String downloadUrl = majorFileSrcTemp.getDownloadUrl();
		int numFlag = downloadUrl.indexOf("upload/");
		if(numFlag!=-1){
			String fileName = downloadUrl.substring(numFlag).substring(7);
			CommonUtil.deleteFile(ServletActionContext.getServletContext()
					.getRealPath("upload")
					+ "/" + fileName);
		}
		
		majorFileSrcDao.deleteMajorFileSrc(majorFileSrc);
		return redirect(this.getUrl());
	}

	/**
	 * 批量删除信息
	 */
	public String deleteMoreMajorFileSrc() {
		
		//删除服务器文件
		List<MajorFileSrc> listTemp = majorFileSrcDao.selectMajorFileSrcByMajorFileIdString(majorFileSrc);
		for(int i=0;i<listTemp.size();i++){
			if(CommonUtil.isNotNullOrNotEqualsEmpty(listTemp.get(i).getDownloadUrl())){
				
				String downloadUrl = listTemp.get(i).getDownloadUrl();
				int numFlag = downloadUrl.indexOf("upload/");
				if(numFlag!=-1){
					String fileName = downloadUrl.substring(numFlag).substring(7);
					CommonUtil.deleteFile(ServletActionContext.getServletContext()
							.getRealPath("upload")
							+ "/" + fileName);
				}
			}
		}
		
		majorFileSrcDao.deleteMoreMajorFileSrc(majorFileSrc);
		return redirect(this.getUrl());
	}

	public MajorFileSrc getMajorFileSrc() {
		return majorFileSrc;
	}

	public void setMajorFileSrc(MajorFileSrc majorFileSrc) {
		this.majorFileSrc = majorFileSrc;
	}

	public List<MajorFileSrc> getListMajorFileSrc() {
		return listMajorFileSrc;
	}

	public void setListMajorFileSrc(List<MajorFileSrc> listMajorFileSrc) {
		this.listMajorFileSrc = listMajorFileSrc;
	}

	public Pagination getPagination() {
		return this.pagination;
	}

	public void setPagination(Pagination pagination) {
		this.pagination = pagination;
	}
}
